package com.sinosoft.perfect.system._unit.service;

import java.sql.SQLException;
import java.util.List;

import com.sinosoft.perfect.system._.po.TUnit;
import com.sinosoft.perfect.system._.po.TUnitInformation;
import com.sinosoft.perfect.system._.po.TUserRegisterNum;
import com.sinosoft.perfect.system._unit.formBean.UnitForm;

public interface IUnitService {

	/**
	 * 增加组织机构，同时增加组织机构详细
	 */
	public String insertTUnit(TUnit tunit) throws SQLException;

	/**
	 * 增加组织结构详细
	 */
	public void insertTUnitInformation(TUnitInformation tunitinformation) throws SQLException;

	/**
	 * 增加组织机构的用户注册码
	 */
	public void insertTUserRegisterNum(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 查询组织机构
	 */
	public List<UnitForm> selectTUnit(TUnit tunit) throws SQLException;

	/**
	 * 查询是否有同名组织机构，1：有，0：没有
	 */
	public int hasTUnitName(TUnit tunit) throws SQLException;

	/**
	 * 查询是否有同名注册码，1：有，0：没有
	 */
	public int hasTUnitUserRegisterNum(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 查询组织机构，返回本组织机构及子机构的unitId集合
	 */
	public String[] selectTUnitAndChildIds(String unitId) throws SQLException;

	/**
	 * 查询排序编码
	 */
	public Long selectTUnitSortNum(TUnit tunit) throws SQLException;

	/**
	 * 查询最大排序编码
	 */
	public Integer selectTUnitMAXSortNum(TUnit tunit) throws SQLException;

	/**
	 * 查询组织机构详细
	 */
	public List<TUnitInformation> selectTUnitInfo(TUnitInformation tunitinfo) throws SQLException;

	/**
	 * 查询组织机构的用户注册码
	 */
	public List<TUserRegisterNum> selectTUserRegisterNum(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 更新组织机构信息
	 */
	public void updateTUnitByPK(TUnit tunit) throws SQLException;

	/**
	 * 更新组织机构状态，包括子组织机构，返回更新后组织机构的unitIds
	 */
	public String[] updateTUnitForStatusByPK(TUnit tunit) throws SQLException;

	/**
	 * 更新组织机构详细信息
	 */
	public void updateTUnitInfoByPK(TUnitInformation tunitinfo) throws SQLException;

	/**
	 * 更新组织机构的用户注册码信息
	 */
	public void updateTUserRegisterNumByPK(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 更新用户注册码的已经注册次数，次数=次数-1
	 */
	public void updateTUserRegisterNumTimesByUnitId(String unitId) throws SQLException;

	/**
	 * 批量删除组织机构及其子机构，以及组织机构的用户注册码、组织机构详细信息、用户组织机构关系
	 */
	public void deleteTUnits(String[] unitIds) throws SQLException;

	/**
	 * 删除指定组织机构及其子机构，以及组织机构的用户注册码、组织机构详细信息、用户组织机构关系
	 */
	public void deleteTUnit(String unitId) throws SQLException;

	/**
	 * 删除组织机构的用户注册码
	 */
	public void deleteTUserRegisterNumByUnitId(String unitId) throws SQLException;

	/**
	 * 排序组织机构
	 */
	public boolean sortUnit(long newSortNumber, String unitId) throws SQLException;
	
	public List<TUnit> selectTUnitByUnitIds(String unitIds) throws SQLException;

}
